home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 026-050 / scopedisk33 / dutils / scat.c < prev   
C/C++ Source or Header  |  1995-03-18  |  971b  |  61 lines

  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. main(ac, av)
  5. char *av[];
  6. {
  7.     register int i;
  8.     register FILE *stream;
  9.  
  10.     for (i = 1; i < ac; ++i) {
  11.     stream = fopen(av[i], "r");
  12.     if (stream) {
  13.         scat(stream);
  14.         fclose(stream);
  15.     } else {
  16.         fprintf(stderr, "Unable to open %s\n", av[i]);
  17.     }
  18.     }
  19.     if (ac == 1)
  20.     scat(stdin);
  21. }
  22.  
  23. scat(stream)
  24. FILE *stream;
  25. {
  26.     short c;
  27.  
  28.     while ((c = fgetc(stream)) >= 0) {
  29.     if (isascii(c) && isprint(c)) {
  30.         reverse(0);
  31.         putc(c, stdout);
  32.         continue;
  33.     }
  34.     reverse(1);
  35.     putc((c|0x40)&0x7F, stdout);
  36.     if (c == '\n')
  37.         putc(c, stdout);
  38.     }
  39.     reverse(0);
  40. }
  41.  
  42. reverse(mode)
  43. {
  44.     static char xmode;
  45.  
  46.     if (mode) {
  47.     if (!xmode) {
  48.         putc(0x9b, stdout);
  49.         putc(0x37, stdout);
  50.         putc('m', stdout);
  51.     }
  52.     } else {
  53.     if (xmode) {
  54.         putc(0x9b, stdout);
  55.         putc(0x30, stdout);
  56.         putc('m', stdout);
  57.     }
  58.     }
  59.     xmode = mode;
  60. }
  61.